#define _CRT_SECURE_NO_WARNINGS 1

//#include <stdio.h>
//
//void func2()
//{
//	int b = 20;
//	printf("%p\n", &b);
//}
//
//void func1()
//{
//	int a = 10;
//	printf("%p\n", &a);
//}
//
//int main()
//{
//	func1();
//	func2();
//	return 0;
//}







//#include <stdio.h>
//
//void func2()
//{
//	int b = 20;
//	printf("%p\n", &b);
//}
//
//void func1()
//{
//	int a = 10;
//	printf("%p\n", &a);
//
//	func2();
//}
//
//int main()
//{
//	func1();
//	return 0;
//}




//#include <stdio.h>
//
//#define NUMS 1
//
//void reverse(int* nums,int begin,int end)
//{
//	while (begin < end)
//	{
//		int tmp = nums[begin];
//		nums[begin] = nums[end];
//		nums[end] = tmp;
//
//		++begin;
//		--end;
//	}
//}
//
//void retate(int* nums, int numsSize, int k)
//{
//	if (k > numsSize)
//	{
//		k %= numsSize;
//	}
//
//	reverse(nums,0, numsSize - k - 1);
//	reverse(nums, numsSize - k, numsSize -1);
//	reverse(nums, 0, numsSize - 1);
//}
//
//int main()
//{
//	int i = 0;
//	int nums[NUMS] = { 0 };
//	int k = 0;
//	scanf("%d", &k);
//
//	for (i = 0; i < NUMS; i++)
//	{
//		scanf("%d", &nums[i]);
//	}
//	
//	int numsSize = sizeof(nums) / sizeof(nums[0]);
//	
//	retate(nums, numsSize, k);
//
//	for (i = 0; i < NUMS; i++)
//	{
//		printf("%d ", nums[i]);
//	}
//
//	return 0;
//}







//#include <stdio.h>
//#include <assert.h>
//#include <stdlib.h>
//#include <string.h>
//
//#define NUMS 4
//
//void retate(int* nums, int numsSize, int k)
//{
//	if (k > numsSize)
//	{
//		k %= numsSize;
//	}
//
//	int* tmp = (int*)malloc(sizeof(int) * numsSize);
//	assert(tmp);
//	memcpy(tmp, nums + numsSize - k, sizeof(int) * k);
//	memcpy(tmp + k, nums, sizeof(int) * (numsSize - k));
//	memcpy(nums, tmp, sizeof(int) * (numsSize));
//	free(tmp);
//	tmp = NULL;
//}
//
//int main()
//{
//	int i = 0;
//	int nums[NUMS] = { 0 };
//
//	for (i = 0; i < NUMS; i++)
//	{
//		scanf("%d", &nums[i]);
//	}
//
//	int numsSize = sizeof(nums) / sizeof(nums[0]);
//
//	int k = 0;
//	scanf("%d", &k);
//
//	retate(nums, numsSize, k);
//
//	for (i = 0; i < NUMS; i++)
//	{
//		printf("%d ", nums[i]);
//	}
//
//	return 0;
//}







//#include "SeqList.h"
//
//void TestSeqList1()
//{
//	SL s;
//	SLInit(&s);
//	
//	SLPushBack(&s, 1);
//	SLPushBack(&s, 2);
//	SLPushBack(&s, 3);
//	SLPushBack(&s, 4); 
//	SLPushBack(&s, 5);
//	SLPushBack(&s, 6);
//	SLPushBack(&s, 7);
//	SLPushBack(&s, 8);
//	SLPrint(&s);
//
//	SLPushFront(&s, 1);
//	SLPushFront(&s, 2);
//	SLPrint(&s);
//
//	SLpopBack(&s); 
//	SLpopBack(&s);
//	SLpopBack(&s);
//	SLpopBack(&s);
//	SLpopBack(&s);
//	SLpopBack(&s);
//	SLpopBack(&s);
//	SLpopBack(&s);
//	SLPrint(&s);
//
//	SLDestroy(&s); 
//}
//
//int main()
//{
//	TestSeqList1();
//	
//	return 0;
//}


#include "SeqList.h"

void TestSeqList1()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushBack(&s, 4);
	SLPushBack(&s, 5);
	SLPushBack(&s, 6);
	SLPushBack(&s, 7);
	SLPushBack(&s, 8);
	SLPushBack(&s, 9);
	SLPrint(&s);

	SLInsert(&s, 4, 40);
	SLPrint(&s);
	SLInsert(&s, 0, 40);
	SLPrint(&s);

	SLErase(&s, 4);
	SLPrint(&s);
	SLErase(&s, 4);
	SLPrint(&s);

	SLpopBack(&s);
	SLPrint(&s);
	SLpopBack(&s);
	SLPrint(&s); 
	SLpopBack(&s);
	SLPrint(&s); 
	SLpopBack(&s);
	SLPrint(&s); 
	SLpopBack(&s);
	SLPrint(&s); 
	SLpopBack(&s);
	SLPrint(&s); 
	SLpopBack(&s);
	SLPrint(&s);
	SLpopBack(&s);
	SLPrint(&s);

	SLDestroy(&s);
}

void TestSeqList2()
{
	SL s;
	SLInit(&s);

	SLPushFront(&s, 1);
	SLPushFront(&s, 2);
	SLPushFront(&s, 3);
	SLPushFront(&s, 4);
	SLPrint(&s);

	SLpopFront(&s);
	SLPrint(&s);
	SLpopFront(&s);
	SLPrint(&s);
	SLpopFront(&s); 
	SLPrint(&s);

	SLDestroy(&s);
}


int main()
{
	TestSeqList1();
	TestSeqList2();

	return 0;
}